/*
 * Auto generated C++ header for Mass Effect 2.
 *	by _silencer.
 */

#ifndef UNREAL_SDK_GAME_WwiseAudio_H
#define UNREAL_SDK_GAME_WwiseAudio_H

#include "unreal_game_global.h"

namespace game
{
	using namespace unreal;

	class ActorFactoryWwiseAmbientSound: public ActorFactory
	{
		DECLARE_PACKAGE_CLASS( ActorFactoryWwiseAmbientSound, ActorFactory, WwiseAudio )

	public:

		WwiseEventPair AudioEvent; //offset = 100, size = 8
	};

	class AnimNotify_WwiseEvent: public AnimNotify
	{
		DECLARE_PACKAGE_CLASS( AnimNotify_WwiseEvent, AnimNotify, WwiseAudio )

	public:

		WwiseEventPair AudioEvent; //offset = 60, size = 8
		Bool bFollowActor: 1; //offset = 68, size = 4
		Name BoneName; //offset = 72, size = 8
	};

	class InterpTrackInstWwiseEvent: public InterpTrackInst
	{
		DECLARE_PACKAGE_CLASS( InterpTrackInstWwiseEvent, InterpTrackInst, WwiseAudio )

	public:

		Float LastUpdatePosition; //offset = 60, size = 4
	};

	class InterpTrackInstWwiseRTPC: public InterpTrackInst
	{
		DECLARE_PACKAGE_CLASS( InterpTrackInstWwiseRTPC, InterpTrackInst, WwiseAudio )

	public:

		WwiseRTPCForActorHandler m_RTPCHandler; //offset = 60, size = 20
	};

	struct WwiseEventTrackKey
	{
		Float Time; //offset = 0, size = 4
		WwiseEvent* Event; //offset = 4, size = 4
	};

	class InterpTrackWwiseEvent: public InterpTrack
	{
		DECLARE_PACKAGE_CLASS( InterpTrackWwiseEvent, InterpTrack, WwiseAudio )

	public:

		Array<WwiseEventTrackKey> WwiseEvents; //offset = 88, size = 12
		Bool m_bRequiresPreload: 1; //offset = 100, size = 4
	};

	class InterpTrackWwiseRTPC: public InterpTrackFloatBase
	{
		DECLARE_PACKAGE_CLASS( InterpTrackWwiseRTPC, InterpTrackFloatBase, WwiseAudio )

	public:

		String Param; //offset = 108, size = 12
	};

	class InterpTrackWwiseSoundEffect: public InterpTrackWwiseEvent
	{
		DECLARE_PACKAGE_CLASS( InterpTrackWwiseSoundEffect, InterpTrackWwiseEvent, WwiseAudio )

	public:

		WwiseAudioComponent* m_pComponent; //offset = 104, size = 4
	};

	class SeqAct_WwiseClearBanks: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_WwiseClearBanks, SequenceAction, WwiseAudio )

	public:
	};

	class SeqAct_WwiseLoadBank: public SeqAct_Latent
	{
		DECLARE_PACKAGE_CLASS( SeqAct_WwiseLoadBank, SeqAct_Latent, WwiseAudio )

	public:

		Bool Async: 1; //offset = 256, size = 4
		WwiseBank* Bank; //offset = 260, size = 4
		Int Signal; //offset = 264, size = 4
	};

	class SeqAct_WwiseLockMic: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_WwiseLockMic, SequenceAction, WwiseAudio )

	public:
	};

	class SeqAct_WwiseMusicVolumeDisable: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_WwiseMusicVolumeDisable, SequenceAction, WwiseAudio )

	public:

		WwiseMusicVolume* m_MusicVolume; //offset = 240, size = 4
	};

	class SeqAct_WwiseMusicVolumeEnable: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_WwiseMusicVolumeEnable, SequenceAction, WwiseAudio )

	public:

		WwiseMusicVolume* m_MusicVolume; //offset = 240, size = 4
	};

	class SeqAct_WwisePostEvent: public SeqAct_Latent
	{
		DECLARE_PACKAGE_CLASS( SeqAct_WwisePostEvent, SeqAct_Latent, WwiseAudio )

	public:

		Pointer VfTable_IWwiseComponentCallback; //offset = 256, size = 4
		WwiseBaseSoundObject* WwiseObject; //offset = 260, size = 4
		Pointer CriticalSection; //offset = 264, size = 4
		Array<WwiseAudioComponent*> ActiveComponents; //offset = 268, size = 12
	};

	class SeqAct_WwisePostTrigger: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_WwisePostTrigger, SequenceAction, WwiseAudio )

	public:

		String Trigger; //offset = 240, size = 12
	};

	class SeqAct_WwiseSetRTPCValue: public SeqAct_Latent
	{
		DECLARE_PACKAGE_CLASS( SeqAct_WwiseSetRTPCValue, SeqAct_Latent, WwiseAudio )

	public:

		String Param; //offset = 256, size = 12
		Float Value; //offset = 268, size = 4
		Bool Running: 1; //offset = 272, size = 4
		Array<WwiseRTPCForActorHandler> m_RTPCHandlers; //offset = 276, size = 12
	};

	class SeqAct_WwiseSetState: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_WwiseSetState, SequenceAction, WwiseAudio )

	public:

		String StateGroup; //offset = 240, size = 12
		String State; //offset = 252, size = 12
	};

	class SeqAct_WwiseSetSwitch: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_WwiseSetSwitch, SequenceAction, WwiseAudio )

	public:

		String SwitchGroup; //offset = 240, size = 12
		String Switch; //offset = 252, size = 12
	};

	class SeqAct_WwiseStartAudioObjects: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_WwiseStartAudioObjects, SequenceAction, WwiseAudio )

	public:
	};

	class SeqAct_WwiseStopAll: public SequenceAction
	{
		DECLARE_PACKAGE_CLASS( SeqAct_WwiseStopAll, SequenceAction, WwiseAudio )

	public:
	};

	struct WwiseRTPCForActorHandler
	{
		Actor* m_actor; //offset = 0, size = 4
		String m_sRTPCName; //offset = 4, size = 12
		Float m_currentValue; //offset = 16, size = 4
	};

	class WwiseAudioComponent: public ActorComponent
	{
		DECLARE_PACKAGE_CLASS( WwiseAudioComponent, ActorComponent, WwiseAudio )

	public:

		Bool bUseOwnerLocation: 1; //offset = 88, size = 4
		Bool m_bEnableEnvAudio: 1; //offset = 88, size = 4
		Bool m_bEnableObstructionOcclusion: 1; //offset = 88, size = 4
		Bool m_bUpdateAudioEnginePosition: 1; //offset = 88, size = 4
		Vector Location; //offset = 92, size = 12
		Vector Orientation; //offset = 104, size = 12
		Vector ComponentLocation; //offset = 116, size = 12
		Vector ComponentOrientation; //offset = 128, size = 12
		Pointer m_pNotifyCriticalSection; //offset = 140, size = 4
		Map</*Warning unknown type, defaulting to*/ Int, /*Warning unknown type, defaulting to*/ Int> WwiseEvents; //offset = 144, size = 20
		Int NextWwiseEventIndex; //offset = 164, size = 4
		Array<WwiseEventInstance*> WwiseEventsPendingStop; //offset = 168, size = 12
		Name m_ComponentGroup; //offset = 180, size = 8
		Int m_nAttachBoneIndex; //offset = 188, size = 4
		Array<WwiseComponentCallbackInfo> Callbacks; //offset = 192, size = 12
		Int Cleaned; //offset = 204, size = 4
		Float m_fDistanceToListener; //offset = 208, size = 4
		Float m_fMaxAudible3DSoundDistance; //offset = 212, size = 4
		Int m_nMaxAudible3DSoundEventIndex; //offset = 216, size = 4
		Int m_nNumberOf3DSoundsPlaying; //offset = 220, size = 4
		Int m_nNumberOfSoundsUseAttenuation; //offset = 224, size = 4
		Int m_nNumberOfSoundsWithUserDefinedPositioning; //offset = 228, size = 4
		Float m_fTargetOcclusion; //offset = 232, size = 4
		Float m_fTargetObstruction; //offset = 236, size = 4
		Float m_fCurrentOcclusion; //offset = 240, size = 4
		Float m_fCurrentObstruction; //offset = 244, size = 4
		Double m_fLastObstructionUpdate; //offset = 248, size = 8
		Float ObstructionUpdateSpeed; //offset = 256, size = 4
		Bool m_bIsRegistered: 1; //offset = 260, size = 4

		void SetLocation( Vector NewLocation );
		void Set3D();
		void Set2D();
		Bool RegisterGameObject();
		Bool UnregisterGameObject();
		Float GetDistanceToListener();
		void SetObstructionOcclusionEnabled( Bool i_bValue );
		void SetEnvironmentalAudioEnabled( Bool i_bValue );
		Bool GetObstructionOcclusionEnabled();
		Bool GetEnvironmentalAudioEnabled();
		Vector GetMicPosition();
		Bool SetGlobalRTPCFromScript( String in_pszRtpcName, Float in_value );
		WwiseAudioComponent* CreateComponentFromScript( Actor* pActor, String Label, Name ComponentGroup, Name AttachBone, Bool bRegister );
		Bool IsEventPlaying( Int Index );
		Bool IsPlaying( WwiseBaseSoundObject* Event );
		Bool PostGlobalEvent( Name GlobalEventName );
		Bool SetWwiseTrigger( String sTrigger );
		Bool SetWwiseSwitch( String sGroup, String sState );
		Bool SetWwiseRTPC( String sName, Float fValue );
		Bool Stop( WwiseBaseSoundObject* Base );
		Bool StopWwiseEvent( WwiseEventPair AudioEvent );
		Bool Play( WwiseBaseSoundObject* Base, Bool bTrackPosition );
		Bool PlayWwiseEvent( WwiseEventPair AudioEvent, Bool bTrackPosition );
		Float InstancePosition( Int Index );
		Bool StopAll();
		Bool StopInstance( Int Index );
		Bool PlayInstance( Int Index, Bool bTrackPosition );
		Int FindInstanceIndex( WwiseBaseSoundObject* BaseSound, WwiseEvent* StopEvent );
		Int AddInstance( WwiseBaseSoundObject* BaseSound, WwiseEvent* StopEvent );
		void SetRTPCWithHandler( WwiseRTPCForActorHandler RTPCHandler, Float fValue );
	};

	class WwiseAmbientSound: public Keypoint
	{
		DECLARE_PACKAGE_CLASS( WwiseAmbientSound, Keypoint, WwiseAudio )

	public:

		Bool bAutoPlay: 1; //offset = 508, size = 4
		Bool bIsPlaying: 1; //offset = 508, size = 4
		Bool bWasPlaying: 1; //offset = 508, size = 4
		WwiseEventPair AudioEvent; //offset = 512, size = 8
		WwiseAudioComponent* AudioComponent; //offset = 520, size = 4
	};

	class WwiseAudioComponentMultiLoc: public WwiseAudioComponent
	{
		DECLARE_PACKAGE_CLASS( WwiseAudioComponentMultiLoc, WwiseAudioComponent, WwiseAudio )

	public:

		Map_Mirror m_Locations; //offset = 264, size = 20

		void Set3D();
	};

	class WwiseAudioDevice: public AudioDevice
	{
		DECLARE_PACKAGE_CLASS( WwiseAudioDevice, AudioDevice, WwiseAudio )

	public:
	};

	class WwiseVolume: public Volume
	{
		DECLARE_PACKAGE_CLASS( WwiseVolume, Volume, WwiseAudio )

	public:

		WwiseVolumeTimer* m_oTrackTimer; //offset = 568, size = 4

		void TimerPop( WwiseVolumeTimer* T );
		void PostBeginPlay();
	};

	class WwiseAudioVolume: public WwiseVolume
	{
		DECLARE_PACKAGE_CLASS( WwiseAudioVolume, WwiseVolume, WwiseAudio )

	public:

		Array<WwiseEventPair> WwiseEventArray; //offset = 572, size = 12
		WwiseAudioComponentMultiLoc* AudioComponent; //offset = 584, size = 4
		Pawn* m_oTrackPawn; //offset = 588, size = 4
		Bool bPawnIsInsideVolume: 1; //offset = 592, size = 4
		Bool bAutoPlay: 1; //offset = 592, size = 4
		Array<KConvexElem> aConvexElems; //offset = 596, size = 12
		Array<KBoxElem> aBoxElems; //offset = 608, size = 12
		Bool bWasPlaying: 1; //offset = 620, size = 4
		Bool DrawSoundLocations: 1; //offset = 620, size = 4

		void Stop();
		void Start();
		void myTimerPop();
		void TimerPop( WwiseVolumeTimer* T );
		void UnTouch( Actor* Other );
		void Touch( Actor* Other, PrimitiveComponent* OtherComp, Vector HitLocation, Vector HitNormal );
		void PostBeginPlay();
	};

	struct WwiseSHA1Digests
	{
		Map</*Warning unknown type, defaulting to*/ Int, /*Warning unknown type, defaulting to*/ Int> SHA1Data; //offset = 0, size = 20
	};

	struct WwiseSHA1Digest
	{
		Byte Digest[20]; //offset = 0, size = 1
	};

	class WwiseBank: public Object
	{
		DECLARE_PACKAGE_CLASS( WwiseBank, Object, WwiseAudio )

	public:

		Map</*Warning unknown type, defaulting to*/ Int, /*Warning unknown type, defaulting to*/ Int> Data; //offset = 60, size = 20
		WwiseSHA1Digests SHA1s; //offset = 80, size = 20
		WwiseSHA1Digests InitBankSHA1s; //offset = 100, size = 20
		Int Id; //offset = 120, size = 4
		Int InternalBankId; //offset = 124, size = 4
		Bool IsLoaded: 1; //offset = 128, size = 4
		Bool IsLocalised: 1; //offset = 128, size = 4
		Bool IsInitBank: 1; //offset = 128, size = 4
		WwiseBank* Parent; //offset = 132, size = 4
		Array<Pointer> Children; //offset = 136, size = 12
	};

	enum WwiseEventPrepareState
	{
		WwiseEvent_Unprepared,
		WwiseEvent_Preparing,
		WwiseEvent_PrepareSuccess,
	};

	struct WwiseRelationships
	{
		WwiseBank* Bank; //offset = 0, size = 4
		Array<WwiseStream*> Streams; //offset = 4, size = 12
	};

	struct WwiseEventPair
	{
		WwiseEvent* Play; //offset = 0, size = 4
		WwiseEvent* Stop; //offset = 4, size = 4
	};

	class WwiseEvent: public WwiseBaseSoundObject
	{
		DECLARE_PACKAGE_CLASS( WwiseEvent, WwiseBaseSoundObject, WwiseAudio )

	public:

		Int Id; //offset = 60, size = 4
		Map</*Warning unknown type, defaulting to*/ Int, /*Warning unknown type, defaulting to*/ Int> References; //offset = 64, size = 20
		Int PrepareState; //offset = 84, size = 4
		String WwisePath; //offset = 88, size = 12
		String Notes; //offset = 100, size = 12
		Double DurationMS; //offset = 112, size = 8
		Float DurationMilliseconds; //offset = 120, size = 4
		Bool IsLocalised: 1; //offset = 124, size = 4
		Bool m_bHasEnvironmentalSettings: 1; //offset = 124, size = 4
		Float m_fMaxAudible3DSoundDistance; //offset = 128, size = 4
		Int m_nNumberOf3DSoundsPlaying; //offset = 132, size = 4
		Int m_nNumberOfSoundsUseAttenuation; //offset = 136, size = 4
		Int m_nNumberOfSoundsWithUserDefinedPositioning; //offset = 140, size = 4
	};

	class WwiseCollection: public Object
	{
		DECLARE_PACKAGE_CLASS( WwiseCollection, Object, WwiseAudio )

	public:

		WwiseBank* Bank; //offset = 60, size = 4
		Array<WwiseEvent*> Events; //offset = 64, size = 12
		Array<WwiseEventPairObject*> EventPairs; //offset = 76, size = 12
		Array<WwiseStream*> Streams; //offset = 88, size = 12
		WwiseSHA1Digest SHA1Digest; //offset = 100, size = 20
	};

	struct WwiseComponentCallbackInfo
	{
		Int CallbackFlags; //offset = 0, size = 4
		WwiseEvent* TargetEvent; //offset = 4, size = 4
		TargetObject TargetObject; //offset = 8, size = 8
	};

	class WwiseComponentCallback: public Interface
	{
		DECLARE_PACKAGE_CLASS( WwiseComponentCallback, Interface, WwiseAudio )

	public:
	};

	struct WwiseDialogueArgumentValue
	{
		Int Id; //offset = 0, size = 4
		Name Name; //offset = 4, size = 8
	};

	struct WwiseDialogueArgument
	{
		Int Id; //offset = 0, size = 4
		Name Name; //offset = 4, size = 8
		Array<WwiseDialogueArgumentValue> Values; //offset = 12, size = 12
	};

	class WwiseDialogueEvent: public WwiseEvent
	{
		DECLARE_PACKAGE_CLASS( WwiseDialogueEvent, WwiseEvent, WwiseAudio )

	public:

		Array<WwiseDialogueArgument> Arguments; //offset = 144, size = 12
	};

	class WwiseEnvironmentSettings: public Object
	{
		DECLARE_PACKAGE_CLASS( WwiseEnvironmentSettings, Object, WwiseAudio )

	public:

		String Environment; //offset = 60, size = 12
		Int Id; //offset = 72, size = 4
		Bool bIdResolved: 1; //offset = 76, size = 4
		Float fPrimaryControlValue; //offset = 80, size = 4
		Bool bOverrideLowerPriorityEnvironments: 1; //offset = 84, size = 4
		Float fOverrideControlValue; //offset = 88, size = 4
	};

	class WwiseEnvironmentVolume: public Volume
	{
		DECLARE_PACKAGE_CLASS( WwiseEnvironmentVolume, Volume, WwiseAudio )

	public:

		Float Priority; //offset = 568, size = 4
		WwiseEnvironmentSettings* Settings; //offset = 572, size = 4
	};

	class WwiseEventPairObject: public WwiseBaseSoundObject
	{
		DECLARE_PACKAGE_CLASS( WwiseEventPairObject, WwiseBaseSoundObject, WwiseAudio )

	public:

		WwiseEvent* Play; //offset = 60, size = 4
		WwiseEvent* Stop; //offset = 64, size = 4
	};

	class WwiseEventInstance: public WwiseEventPairObject
	{
		DECLARE_PACKAGE_CLASS( WwiseEventInstance, WwiseEventPairObject, WwiseAudio )

	public:

		Int WwisePlayingID; //offset = 68, size = 4
	};

	class WwiseFaceFXStopper: public Object
	{
		DECLARE_PACKAGE_CLASS( WwiseFaceFXStopper, Object, WwiseAudio )

	public:

		Pointer VfTable_IWwiseComponentCallback; //offset = 60, size = 4
		SkeletalMeshComponent* m_SkelMeshComp; //offset = 64, size = 4
		WwiseAudioComponent* m_WwiseAudioComp; //offset = 68, size = 4
		WwiseEvent* m_WwiseAudioEvent; //offset = 72, size = 4
	};

	class WwiseMicPosOrient: public Actor
	{
		DECLARE_PACKAGE_CLASS( WwiseMicPosOrient, Actor, WwiseAudio )

	public:

		Vector GetUpVector();
		Vector GetFrontVector();
	};

	class WwiseMusicVolume: public WwiseVolume
	{
		DECLARE_PACKAGE_CLASS( WwiseMusicVolume, WwiseVolume, WwiseAudio )

	public:

		Name MusicID; //offset = 572, size = 8
		Int MusicPriority; //offset = 580, size = 4
		Bool InitiallyEnabled: 1; //offset = 584, size = 4
		Bool m_bContainsPawn: 1; //offset = 584, size = 4
		Bool m_bMyMusicIsPlaying: 1; //offset = 584, size = 4
		Bool m_bEnabled: 1; //offset = 584, size = 4
		WwiseEventPairObject* m_pMusicEventPair; //offset = 588, size = 4
		WwiseAudioComponent* m_pWwiseComponent; //offset = 592, size = 4
		Pawn* m_oTrackPawn; //offset = 596, size = 4
		Int m_nCurrentMusicState; //offset = 600, size = 4

		void myTimerPop();
		void SetContainsPlayer( Bool bContainsPlayer );
		void SetEnabled( Bool bEnabled );
		void StopMusic();
		void StartMusic();
		Bool CheckPriority();
		void TimerPop( WwiseVolumeTimer* T );
		void PostBeginPlay();
	};

	struct WwiseFileCacheGuids
	{
		Map</*Warning unknown type, defaulting to*/ Int, /*Warning unknown type, defaulting to*/ Int> Guids; //offset = 0, size = 20
	};

	class WwiseStream: public Object
	{
		DECLARE_PACKAGE_CLASS( WwiseStream, Object, WwiseAudio )

	public:

		Map</*Warning unknown type, defaulting to*/ Int, /*Warning unknown type, defaulting to*/ Int> Data; //offset = 60, size = 20
		Int Id; //offset = 80, size = 4
		Bool IsLocalised: 1; //offset = 84, size = 4
		Name Language; //offset = 88, size = 8
		Bool IsRegistered: 1; //offset = 96, size = 4
		Name Filename; //offset = 100, size = 8
		String OrigPath; //offset = 108, size = 12
		String OriginalName; //offset = 120, size = 12
		WwiseSHA1Digests SHA1s; //offset = 132, size = 20
		WwiseFileCacheGuids FileCacheGuids; //offset = 152, size = 20
		Name BankName; //offset = 172, size = 8
	};

	class WwiseVolumeTimer: public Info
	{
		DECLARE_PACKAGE_CLASS( WwiseVolumeTimer, Info, WwiseAudio )

	public:

		WwiseVolume* m_oVolume; //offset = 508, size = 4

		void Timer();
	};

	class ActorFactoryWwiseDistanceRTPC: public ActorFactory
	{
		DECLARE_PACKAGE_CLASS( ActorFactoryWwiseDistanceRTPC, ActorFactory, WwiseAudio )

	public:
	};

	const char* AUDIO_DISTANCE_FACTOR = 0.0;

	class WwiseDistanceRTPC: public Actor
	{
		DECLARE_PACKAGE_CLASS( WwiseDistanceRTPC, Actor, WwiseAudio )

	public:

		String RTPCName; //offset = 508, size = 12
		Float TickDelay; //offset = 520, size = 4
		Float m_fTimeSinceLastUpdate; //offset = 524, size = 4

		void Tick( Float DeltaTime, Float DistanceFromListener, Vector Distance, Vector MicPosition );
	};

	class ActorFactoryWwiseMicPosOrient: public ActorFactory
	{
		DECLARE_PACKAGE_CLASS( ActorFactoryWwiseMicPosOrient, ActorFactory, WwiseAudio )

	public:
	};

	class WwiseOcclusionVolume: public Volume
	{
		DECLARE_PACKAGE_CLASS( WwiseOcclusionVolume, Volume, WwiseAudio )

	public:
	};
}

#endif
